//
//  WNHomeViewModel.swift
//  XLWeibo
//
//  Created by 风不会停息 on 2017/7/26.
//  Copyright © 2017年 风不会停息. All rights reserved.
//

import UIKit
import SDWebImage


class WNHomeViewModel: NSObject {
    
    var statusList : [WNStatusViewModel] = [WNStatusViewModel]()
    
    
    
    //  加载微博数据
    func loadData(isUp : Bool , callBack: @escaping (Bool , String) ->()) {
        let token = WNUserAccountViewModel.sharedViewModel.accessToken!
        
        var maxId : Int64 = 0
        
        var sinceId : Int64 = 0
        
        var message = "没有加载到最新的微博数据"
        
        if isUp {
            //上拉加载
            maxId = statusList.last?.status?.id ?? 0
            if maxId > 0 {
                
                maxId -= 1
            }
        }
        else{
            //下拉刷新
            sinceId = statusList.first?.status?.id ?? 0
        }
        
        HMNetworkTools.sharedTools.requestStatuses(access_token: token , maxId : maxId ,sinceId: sinceId) { (response, error) in
            if error != nil {
                print("error: \(error!)")
                
                callBack(false , message)
                return
            }
            //  代码执行到此，网络请求成功
            let dic = response as! [String: Any]
            
            //  获取微博字典数组
            let statusDicArray = dic["statuses"] as! [[String: Any]]
            //  使用YYModel完成字典转模型
            //  HMStatus.self 表示获取类的class
            let statusModelArray = NSArray.yy_modelArray(with: WNStatus.self, json: statusDicArray) as! [WNStatus]
            
            var tempArray = [WNStatusViewModel]()
            
            let group = DispatchGroup()
            
            for statusModel in statusModelArray{
                
                //  判断微博数据是否有单张图片
                if statusModel.pic_urls?.count == 1 {
                    //  下载的图片地址
                    let imageUrl = statusModel.pic_urls?.first?.thumbnail_pic
                    //  原创微博单张图片,需要下载
                    //  加入调度组
                    group.enter()
                    
                    SDWebImageManager.shared().loadImage(with: URL(string: imageUrl!), options: [], progress: nil, completed: { (image, imageData, error, _, _, _) in
                        print("原创微博单张图片下载完成: url: \(imageUrl!)")
                        //  图片下载完成，从调度组离开
                        group.leave()
                    })
                }
                if statusModel.retweeted_status?.pic_urls?.count == 1 {
                    //  转发微博单张图片
                    //  下载的图片地址
                    let imageUrl = statusModel.retweeted_status?.pic_urls?.first?.thumbnail_pic
                    //  原创微博单张图片,需要下载
                    //  加入调度组
                    group.enter()
                    SDWebImageManager.shared().loadImage(with: URL(string: imageUrl!), options: [], progress: nil, completed: { (image, imageData, error, _, _, _) in
                        print("转发微博单张图片下载完成: url: \(imageUrl!)")
                        //  图片下载完成，从调度组离开
                        group.leave()
                    })
                }
                
                let viewModel = WNStatusViewModel()
                viewModel.status = statusModel
                tempArray.append(viewModel)
//                print(viewModel.status?.text)
                print(viewModel.status?.comments_count)

            }
            //  赋值
//            self.statusList = tempArray
            if isUp {
                //  上拉加载，把请求回来的数据添加到原始数组的后面
                self.statusList.append(contentsOf: tempArray)
            } else {
                //  下拉刷新，把请求回来的数据添加到原始数据的最前面
                self.statusList.insert(contentsOf: tempArray, at: 0)
                print("下拉")
            }
            
            if tempArray.count > 0 {
                message = "加载了\(tempArray.count)条微博数据"
            }

            
            group.notify(queue: DispatchQueue.main, execute: {
                //回调数据
                callBack(true , message)
            })
        }
    }

}
